using System;
using System.Data;
using System.Drawing;
using System.IO;
//using System.Xml.Linq;
using System.Windows.Forms;
//using System.Linq;
//using clsVariables;
//using Utiles.Errores;

#region  Notas
//En el tag de sharedpropertys de las opciones de menú cuando es navegador tiene el id asociado (por código no por designer)
//En la key del toolclick se pone el form q ha de crear: navSocios, frmLogin, etc... El título lo coge del display de la opción
#endregion
//'
#region  Imports
#endregion
//'
public partial class frmPrincipalBase
{
    public frmPrincipalBase()
    {
        InitializeComponent();

        //Added to support default instance behavour in C#
        if (defaultInstance == null) defaultInstance = this;
    }

    #region Default Instance

    private static frmPrincipalBase defaultInstance;

    /// <summary>
    /// Added by the VB.Net to C# Converter to support default instance behavour in C#
    /// </summary>
    public static frmPrincipalBase Default
    {
        get
        {
            if (defaultInstance == null)
            {
                defaultInstance = new frmPrincipalBase();
                defaultInstance.FormClosed += defaultInstance_FormClosed;
            }

            return defaultInstance;
        }
    }

    static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e)
    {
        defaultInstance = null;
    }

    #endregion
    //
    //private frmCambiarColores ConfigurarForm;
    //
    /// <summary>
    /// Si tuvo exito devuelve la ruta donde se creo la copia (el fichero no pq. puede ser mas de uno) 
    /// </summary>
    /// <param name="_bolMostrarMjeFin"></param>
    /// <returns></returns>
    private string CrearCopiaSeguridad(bool _bolCopiaAutomatica, bool _bolMostrarMjeFin)
    {
        string _strRutaFolderBackup = string.Empty;
        string strNombreBBDDCliente = Utiles.Aplicacion.AppConfigRecuperar("NombreBBDDCliente", "");
        string strNombreBBDDSistema = Utiles.Aplicacion.AppConfigRecuperar("NombreBBDDSistema", "");
        switch (clsVariables.e_ProviderNombreAplicacion)
        {
            case clsVariables.eProviderNombre.Ninguno:
                MessageBox.Show("Tipo no programado", "KO"); break;
            case clsVariables.eProviderNombre.Odbc:
                MessageBox.Show("Tipo no programado", "KO"); break;
            case clsVariables.eProviderNombre.OleDb:
                MessageBox.Show("Tipo no programado", "KO"); break;
            case clsVariables.eProviderNombre.OracleClient:
                MessageBox.Show("Tipo no programado", "KO"); break;
            case clsVariables.eProviderNombre.SqlClient:
                MessageBox.Show("Tipo no programado", "KO"); break;
            case clsVariables.eProviderNombre.SqlServerCe:
                MessageBox.Show("Tipo no programado", "KO"); break;
            case clsVariables.eProviderNombre.SqlServerCe35:
                MessageBox.Show("Tipo no programado", "KO"); break;
            case clsVariables.eProviderNombre.OracleDataAccessClient:
                MessageBox.Show("Tipo no programado", "KO"); break;
            case clsVariables.eProviderNombre.MySqlClient:
                _strRutaFolderBackup = clsBBDD_MySQL.GestionDatos.CrearCopiaSeguridad(_bolCopiaAutomatica, _bolMostrarMjeFin);
                break;
            default:
                break;
        }
        return _strRutaFolderBackup;
    }
    //
    private void utmMenuPrincipal_ToolClick(System.Object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
    {
        string strForm = string.Empty;
        Form frmFormulario = null;
        bool bolFormularioActivado = false;
        bool bolBuscarForm = false;
        System.Reflection.Assembly m_AsmAssembly;
        bool bolFormNavegador;
        //'
        //'
        try
        {
            Cursor.Current = Cursors.WaitCursor;
            //Sesion.FormularioPrincipal = Me 'Guardamos form Principal
            switch (e.Tool.Key)
            {
                case "CrearCopiaSeguridad": CrearCopiaSeguridad(false, true); break;
                //
                default:
                    //
                    //strForm = String.Format("{0}.{1}", clsVariables.str_NombreAplicacion, e.Tool.Key); //Opciones del Menú
                    strForm = String.Format("{0}", e.Tool.Key); //Opciones del Menú
                    frmFormulario = (Form)System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(strForm); //Intenta crear instancia del form
                    bolFormNavegador = e.Tool.Key.StartsWith("nav", StringComparison.OrdinalIgnoreCase);
                    //
                    //Sino está abierto abrir
                    //If strForm <> "" And Not (boolFormularioActivado) Then
                    //
                    //Si es nothing y es un nav crear el genérico utilizando el id que tiene en el tag
                    if (bolFormNavegador)
                    {
                        //frmFormulario = New navBase With {.IdNavegador = e.Tool.SharedProps.Tag, .Name = e.Tool.Key}
                        if (frmFormulario == null) { frmFormulario = new navBase((int)e.Tool.SharedProps.Tag) { Name = e.Tool.Key }; } //SIno hay una clase para ese nav ya
                        if (((navBase)frmFormulario).bolMasUnaInstancia) { bolBuscarForm = false; bolFormularioActivado = false; }
                        else { bolBuscarForm = true; } //Solo una instancia           
                        //
                    }
                    else { bolBuscarForm = true; }
                    //
                    if (bolBuscarForm)
                    {
                        if (MdiChildren.Length > 0)
                        {
                            foreach (System.Windows.Forms.Form f in MdiChildren)
                            {
                                //Verificar si el Formulario esta abierto
                                //If f.GetType.ToString = strForm Then
                                if (f.Name == strForm)
                                {
                                    bolFormularioActivado = true; f.Select(); //Seleccionar
                                }
                            }
                        }
                    }
                    //
                    if (!bolFormularioActivado)
                    {
                        if (!bolFormNavegador && frmFormulario == null) //Sino era nav y no se creó ya
                        {
                            m_AsmAssembly = System.Reflection.Assembly.GetExecutingAssembly();
                            frmFormulario = (Form)m_AsmAssembly.CreateInstance(strForm);
                        }
                        //
                        //frmFormulario.text = "Chekear Imagenes"'

                        if (System.Diagnostics.Debugger.IsAttached && frmFormulario == null)
                            MessageBox.Show("No se ha podido crear instancia de " + strForm + ". Compruebe no tienen namespace");
                        frmFormulario.Text = e.Tool.SharedProps.Caption.Replace("&", "");
                        bolFormularioActivado = true; //:.Show()
                        //
                        //Aplicar estilo predefinido
                        //ConfigurarForm.bolAplicarEstiloDirecto = true;

                        //ConfigurarForm.RecorrerControlesFormsMDI();
                        //
                        Utiles.Aplicacion.AbrirFormSegunTipoShowForm(ref frmFormulario);
                    }
                    //
                    break;
            }
        }
        catch (Exception ex)
        {
            Utiles.Errores.LanzarError(this, "utmMenuPrincipal_ToolClick", "", ex, MessageBoxIcon.Exclamation, true); //MsgBox(ex.Message)
        }
        finally
        {
            Cursor.Current = Cursors.Default;
        }
    }
    //'
    private void CambiarColores() //TODO: POner colores maca
    {
        utmPrincipal.TabSettings.ActiveTabAppearance.ForeColor = Color.Black;
        utmPrincipal.TabSettings.ActiveTabAppearance.BackColor = Color.LightSteelBlue;
        utmPrincipal.TabSettings.ActiveTabAppearance.BackColor2 = Color.LightSteelBlue;
    }

    public static void InicializarVariablesShared()
    {
        //ASIGNACION variables
        clsVariables.str_Prefijo = Utiles.Aplicacion.AppConfigRecuperar("Prefijo", string.Empty);
        clsVariables.bol_Pruebas = Utiles.Aplicacion.AppConfigRecuperar("Pruebas", "") == "S";   //POr appconfig o su entro con user scp (mas tarde)

        clsVariables.str_NombreBBDDCliente = Utiles.Aplicacion.AppConfigRecuperar("NombreBBDDCliente", string.Empty);
        clsVariables.str_NombreBBDDSistema = Utiles.Aplicacion.AppConfigRecuperar("NombreBBDDSistema", string.Empty);

        //Obtener cadenas conexión
        string str_NombreCc;
        clsVariables.d_Cc = new System.Collections.Generic.Dictionary<clsVariables.e_TipoOrigen, System.Configuration.ConnectionStringSettings>();
        foreach (System.Configuration.ConnectionStringSettings strCc in System.Configuration.ConfigurationManager.ConnectionStrings)
        {
            str_NombreCc = strCc.Name;
            if (str_NombreCc.IndexOf(clsVariables.str_Prefijo) + 1 > 0)
            {
                clsVariables.d_Cc.Add((str_NombreCc.ToLower().IndexOf("cliente") + 1 > 0) ? clsVariables.e_TipoOrigen.Cliente : clsVariables.e_TipoOrigen.Sistema, strCc);
            }
        }
        //
        clsVariables.e_ProviderNombreAplicacion = clsBBDD.ObtenerFactoryDDBB(clsVariables.e_TipoOrigen.Cliente); //Obtener el provider con el cual trabaja el cliente 'TODO.. se necesita
        clsVariables.str_PathBase = clsBBDD.ObtenerVariables("PBAS", clsVariables.e_TipoOrigen.Sistema).ToString();
    }

    private void Principal_Load(object sender, System.EventArgs e)
    {

        frmLogin _frmLoginApp;
        frmSplash _frmSplashApp;
        //'
        try
        {
            if (DesignMode == false) //En inherits en diseño pasa por aquí..??
            {
                Cursor = Cursors.WaitCursor;
                Icon = clsImagenes.Icono;
                Opacity = 0;
                //ConfigurarForm = new frmCambiarColores();
                //ConfigurarForm.Load += new System.EventHandler(ConfigurarForm.frmCambiarColores_Load);
                //ConfigurarForm.Activated += new System.EventHandler(ConfigurarForm.frmCambiarColores_Activated);
                //ConfigurarForm.Deactivate += new System.EventHandler(ConfigurarForm.QuitarTopMost);
                //CambiarColoresTabMDIManager(utmPrincipal) 'CargaColores por defecto

                //Formulario Splash
                _frmSplashApp = new frmSplash();
                //_frmSplashApp.Cerrar.Click += new System.EventHandler(_frmSplashApp.Cerrar_Click);
                _frmSplashApp.ShowDialog();
                //Mostrar control de usuarios
                _frmLoginApp = new frmLogin();
                _frmLoginApp.Load += new System.EventHandler(_frmLoginApp.frmLogin_Load);
                //
                clsVariables.frm_Principal = this; //Antes Login
                if (_frmLoginApp.ShowDialog() == DialogResult.OK) // If _frmLoginApp.ShowDialog(Me)
                {
                    GenerarAutoBackUp();
                    if (!System.Diagnostics.Debugger.IsAttached &&
                    Environment.MachineName.ToLower() != "kys") CheckSqlsPendientes(); //Si hay cambios en tabla Login cagada pq. esto se ejecuta después... pero no creo
                    //_frmLoginApp.Close()
                    //Close() : Exit Sub
                    //clsVariables.str_NombreAplicacion = Aplicacion.AppConfigRecuperar("NombreAplicacion")
                    //Carga variables globales
                    //clsVariables.str_PathAdjuntos = (string)clsBBDD.ObtenerVariables("PADJ", clsVariables.e_TipoOrigen.Sistema);
                    Utiles.UtilInfragistics.Ctrl_MDIWindowsListTool.TraducirTexto(); //Cambiar texto MdiInfragistics
                    CargarFondoFrmPrincipal();
                    //
                    //Mostrar o ocultar herramientas
                    //utmMenuPrincipal.Toolbars.ToolbarsManager.Tools("Opciones").SharedProps.Visible = _
                    //         (UsuarioActualInfo.intGrupoUsuario = 1 OrElse bol_Pruebas)
                    //
                    //Nombre a Formulario
                    Text = clsVariables.str_NombreAplicacion;
                    ShowInTaskbar = true;
                    Opacity = 100;
                    AsignarTagToToolKey(); //idNav de navcabecera asociado
                    btnLanzarPruebas.Visible = clsVariables.bol_Pruebas;
                    //
                    ActualizarPanelesUsbPie();
                }
            }

            this.Icon = Gescan.Properties.Resources.GesCanIcon;
            this.Text = "Gescan ver." + Utiles.General.ObtenerVersionPublicacion() + 
                string.Format(" ({0})", System.IO.File.Exists(clsVariables.str_DllControlSerial) ? "registrado" : "evaluación");

            //Mostrar o no menú Devel
            utmMenuPrincipal.Toolbars[0].Tools["Devel"].SharedProps.Visible = (clsVariables.UsuarioActualInfo.intIdUsuario == 1);
        }
        catch (Exception ex)
        { Utiles.Errores.LanzarError(this, "Load", "", ex, MessageBoxIcon.Exclamation, true); }
        finally
        { Cursor = Cursors.Default; }
    }
    //
    private void GenerarAutoBackUp()
    {
        //Seleccionar el max de la tabla de backups
        DateTime _Hoy = Convert.ToDateTime(DateTime.Now.ToString("dd/MM/yyyy"));
        DateTime? _fechaBackup = clsBBDD.ObtenerDateTimeSQl("Select max(fecha) from backups", clsVariables.e_TipoOrigen.Sistema, null);
        if (_fechaBackup < _Hoy || _fechaBackup == null) //Si es menor a la fecha actual lanzar backup silencioso    
        {
            CrearCopiaSeguridad(true, false);
            //string _strRutaficheros = CrearCopiaSeguridad(false);
            //GrabarEnTablaBackups(_strRutaficheros, true);
        }
    }
    //
    private void CheckSqlsPendientes()
    {
        //Comprobar sqls pendientes
        bool _bolPUPD = false;
        bool _bolUpdateEnMarcha = false;
        string _strFicherosEjecutados = string.Empty;
        DirectoryInfo Directorioinfo;
        string strPathSQls = Application.StartupPath + @"\Sqls";
        //
        if (System.IO.Directory.Exists(strPathSQls))
        {
            try
            { _bolPUPD = Convert.ToBoolean(clsBBDD.ObtenerVariables("PUPD", clsVariables.e_TipoOrigen.Sistema)); }
            catch (Exception) { Console.WriteLine("Error al clsBBDD.ObtenerVariables(PUPD"); } // throw ex; }
            finally { }
            //
            try
            {
                if (_bolPUPD == false) //Si está en false es q nadie está actualizando
                {
                    //Comprobar hay sqls pendientes de actualizar
                    string[] _arrFiles = Directory.GetFiles(strPathSQls, "*.txt", SearchOption.AllDirectories);
                    if (_arrFiles.Length > 0)
                    {
                        DataTable DtSqls = clsBBDD.DtObtener("Select * From sqls", clsVariables.e_TipoOrigen.Sistema);
                        string IdFile, _strFile, _strSql, _strErrSql;
                        clsVariables.e_TipoOrigen _TipoOrigen;
                        int _intUpdate;
                        foreach (string _strFileAndPath in _arrFiles)
                        {
                            _strFile = Path.GetFileName(_strFileAndPath);
                            //if (_strFile.Substring(0, 2).ToLower() != "ok" && _strFile.Substring(0, 2).ToLower() != "ko") //Sino dió error o ya se proceso
                            //{
                            _strErrSql = string.Empty;
                            IdFile = _strFile.Substring(0, 8);

                            //if (DtSqls.Select("sqlid = " + IdFile).Length == 0) //Sino existe el id (no se procesó ya)
                            if (DtSqls.Select("titulofile = '" + _strFile + "'").Length == 0) //Sino existe el id (no se procesó ya)
                            {
                                if (!_bolUpdateEnMarcha) //Evita q haga multiples updates en este bucle for each
                                {
                                    MessageBox.Show("Se han encontrado nueva versión de la base de datos. Espere mientras se actualiza. No cierre el programa hasta q acabe el proceso.",
                                        clsVariables.str_NombreAplicacion, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                    Cursor.Current = Cursors.WaitCursor;
                                    //Marcar q se está haciendo updates
                                    _intUpdate = clsBBDD.EjecutarExecuteNonQuery("update variablessistema set booleano = 1 where clave = 'PUPD'", clsVariables.e_TipoOrigen.Sistema); //Actualizar a true
                                    _bolUpdateEnMarcha = true;
                                    if (_intUpdate == -1) { throw new Exception("No se ha podido actualizar el contenido 'PUPD' a 1."); }
                                }
                                string _strSqlFile = File.ReadAllText(_strFileAndPath);
                                Directorioinfo = new DirectoryInfo(Path.GetDirectoryName(_strFileAndPath));
                                _TipoOrigen = Directorioinfo.Name.ToLower() == "sistema" ? clsVariables.e_TipoOrigen.Sistema : clsVariables.e_TipoOrigen.Cliente;

                                //Ejecutar la sql
                                try
                                {
                                    //_intUpdate = clsBBDD.EjecutarExecuteNonQuery(_strSqlFile, _TipoOrigen);
                                    clsBBDD.EjecutarTransaccion(_TipoOrigen, _strSqlFile, false);
                                } //Ejecutar la sql	                                
                                catch (Exception ex) { _strErrSql = ex.Message; }

                                try
                                {
                                    //Actualizar tabla sqls
                                    _strSql = string.Format(
                                        " INSERT INTO sqls " +
                                        " (Sqlid,origen,contenidosql,fechaejecucion,usuarioejecucionid,titulofile,Error) " +
                                        " VALUES ({0}, '{1}', '{2}', '{3}', {4}, '{5}','{6}'); ",
                                                 IdFile, _TipoOrigen.ToString().Substring(0, 1),
                                                 _strSqlFile.Replace("'", "''").Replace("\"", "'"),
                                                 clsBBDD_MySQL.cFecha(DateTime.Now, true),
                                                 clsVariables.UsuarioActualInfo.intIdUsuario,
                                                 _strFile,
                                                 _strErrSql.Replace("'", "''").Replace("\"", "'"));
                                }
                                catch (Exception)
                                {
                                    try
                                    {
                                        //Misma sql pero sin la sql pq. puede tener errores de texto
                                        _strSql = string.Format(
                                       " INSERT INTO sqls " +
                                       " (Sqlid,origen,contenidosql,fechaejecucion,usuarioejecucionid,titulofile,Error) " +
                                       " VALUES ({0}, '{1}', '{2}', '{3}', {4}, '{5}','{6}'); ",
                                                IdFile, _TipoOrigen.ToString().Substring(0, 1),
                                                "No se ha podido recuperar SQL del fichero",
                                                clsBBDD_MySQL.cFecha(DateTime.Now, true),
                                                clsVariables.UsuarioActualInfo.intIdUsuario,
                                                _strFile,
                                                _strErrSql.Replace("'", "''").Replace("\"", "'"));
                                    }
                                    catch (Exception) { throw; }
                                }

                                _intUpdate = clsBBDD.EjecutarExecuteNonQuery(_strSql, clsVariables.e_TipoOrigen.Sistema); //Actualizar a true                                   
                                _strFicherosEjecutados += String.Format("{2}: {0}{1}", _strFile, Environment.NewLine, _TipoOrigen.ToString());
                                //Actualizar el fichero a OK o KO
                                //File.Move(_strFileAndPath, String.Format("{0}{1}_{2}",
                                //    Path.GetDirectoryName(_strFileAndPath), string.IsNullOrEmpty(_strErrSql) ? "OK" : "KO", _strFile));
                                //Borrar fichero para q no lo procese más
                                File.SetAttributes(_strFileAndPath, File.GetAttributes(_strFileAndPath) & ~FileAttributes.ReadOnly);
                                File.Delete(_strFileAndPath);
                                //if (_intUpdate == -1) { throw new Exception("No se ha podido ejecutar la sql " + _strFile); }

                            }
                            else //Ya está ejecutada... borrar de BBDD
                            {
                                File.SetAttributes(_strFileAndPath, File.GetAttributes(_strFileAndPath) & ~FileAttributes.ReadOnly);
                                File.Delete(_strFileAndPath);
                            }

                            //}
                        }
                        if (!string.IsNullOrEmpty(_strFicherosEjecutados))
                        {
                            MessageBox.Show(String.Format("Base da datos actualizada. Se han ejecutado los siguientes ficheros de slq:{0}{0}{1}",
                                Environment.NewLine, _strFicherosEjecutados), clsVariables.str_NombreAplicacion, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Utiles.Errores.LanzarError(this, "CheckSqlsPendientes", "", ex, MessageBoxIcon.Exclamation, true);
            }
            finally
            { //Siempre dejo como estaba
                Directorioinfo = null;
                if (_bolUpdateEnMarcha) //Si se modifico PUPD
                {
                    int _intUpdate = clsBBDD.EjecutarExecuteNonQuery("update variablessistema set booleano = 0 where clave = 'PUPD' ", clsVariables.e_TipoOrigen.Sistema); //Actualizar a true
                    if (_intUpdate == -1) { throw new Exception("No se ha podido actualizar el contenido 'PUPD' a 0"); }
                }
                Cursor.Current = Cursors.Default;
            }
        }
    }
    //'
    /// <summary>
    /// Actualiza el panel pie (abajo de todo) con la nueva info de clsVariables
    /// </summary>
    /// <remarks></remarks>
    public void ActualizarPanelesUsbPie()
    {
        usbPie.Panels["usbUsuarioActual"].Text = clsVariables.UsuarioActualInfo.strIdentificadorUsuario;
        usbPie.Panels["usbGrupoUser"].Text = "(" + clsVariables.UsuarioActualInfo.strGrupoUsuario + ")";
        Infragistics.Win.UltraWinStatusBar.UltraStatusPanel with_2 = usbPie.Panels["usbCambiarModo"];
        with_2.Visible = clsVariables.bol_Pruebas;
        with_2.Text = clsVariables.bol_Pruebas.ToString();
    }
    //'
    private void AsignarTagToToolKey() //!!Asignar id de navegador a opción de me´nú
    {
        //idNav de navcabecera asociado. !!
        //Sistema
        utmMenuPrincipal.Tools["navUsuarios"].SharedProps.Tag = 1000;
        utmMenuPrincipal.Tools["navGrupos"].SharedProps.Tag = 1010;
        utmMenuPrincipal.Tools["navbugspeticiones"].SharedProps.Tag = 1020;
        utmMenuPrincipal.Tools["navVariablesSistema"].SharedProps.Tag = 1030;
        utmMenuPrincipal.Tools["navVariablesCliente"].SharedProps.Tag = 1040;
        //Cliente      
        utmMenuPrincipal.Tools["navSocios"].SharedProps.Tag = 1;
        utmMenuPrincipal.Tools["navTiposcannabis"].SharedProps.Tag = 2;
        utmMenuPrincipal.Tools["navTiposmateriales"].SharedProps.Tag = 3;
        utmMenuPrincipal.Tools["navTipossocios"].SharedProps.Tag = 4;
        utmMenuPrincipal.Tools["navTipostinturas"].SharedProps.Tag = 5;
        utmMenuPrincipal.Tools["navTiposusuarios"].SharedProps.Tag = 6;
        utmMenuPrincipal.Tools["navTiposHachis"].SharedProps.Tag = 19;
        utmMenuPrincipal.Tools["navTiposGastos"].SharedProps.Tag = 7;
        utmMenuPrincipal.Tools["navTiposPago"].SharedProps.Tag = 8;
        utmMenuPrincipal.Tools["navProveedoresGastos"].SharedProps.Tag = 9;
        utmMenuPrincipal.Tools["navGastos"].SharedProps.Tag = 15;
        utmMenuPrincipal.Tools["navRetiradas"].SharedProps.Tag = 16;
        utmMenuPrincipal.Tools["navCaja"].SharedProps.Tag = 17;
        utmMenuPrincipal.Tools["navTiposEsquejes"].SharedProps.Tag = 18;
    }
    //'
    public void CargarFondoFrmPrincipal()
    {
        //Cargar Fondo
        foreach (Control Ctrl in Controls)
        {
            if (Ctrl is MdiClient)
            {
                //.BackColor = Color.Black ' utm.Appearance.BackColor
                Ctrl.BackgroundImage = clsImagenes.Fondo; // My.Resources.Splash
                //.BackgroundImageLayout = ImageLayout.Zoom 'SC: Hace caso omiso de esto por código. Hay que ponerlo por diseñador
                break;
            }
        }
    }
    //'
    public void Button1_Click(System.Object sender, System.EventArgs e)
    {
        Gescan.frmPruebas n = new Gescan.frmPruebas();
        n.Show();
    }
    /// <summary>
    /// Cambiar de pruebas a no pruebas
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public void usbPie_ButtonClick(System.Object sender, Infragistics.Win.UltraWinStatusBar.PanelEventArgs e)
    {
        switch (e.Panel.Key)
        {
            //Case "usbUsuarioActual"
            case "usbCambiarModo":
                clsVariables.bol_Pruebas = !clsVariables.bol_Pruebas;
                e.Panel.Text = clsVariables.bol_Pruebas.ToString();
                break;
        }
    }
    //

}

